package com.kwm.Aop;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

@Slf4j
//@Aspect
@Component
public class RecordTimeApsect {

    //如果我想指定通知某两个方法，那么就得用 或 在后面添上，如下代码：
//    方法一
//    @Pointcut("execution(* com.kwm.Service.impl.DeptServiceimpl.list()) || execution(* com.kwm.Service.impl.DeptServiceimpl.getById(java.lang.Integer))")
//    方法二
    @Pointcut("@annotation(com.kwm.Aop.Log)")
    public void at() {
    }


    @Before("at()")
    public void befor() {
        log.info("前置通知,如果想在方法前操作，就使用该方法");

    }

    @Around("at()")
    public Object RecordTime(ProceedingJoinPoint point) throws Throwable {

        long begin = System.currentTimeMillis();
        Object result = point.proceed();


        long end = System.currentTimeMillis();
        log.info("运行时间为{}", end - begin);
        return result;

    }

    @After("at()")
    public void after() {
        log.info("后置通知，如果想在方法前操作，就使用该方法");
    }
}
